
package com.kinth.work.webmagic.huicong;

import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.*;
import us.codecraft.webmagic.Page;
import us.codecraft.webmagic.Site;
import us.codecraft.webmagic.Spider;
import us.codecraft.webmagic.pipeline.FilePipeline;
import us.codecraft.webmagic.processor.PageProcessor;

/**
 * 
 * <p>
 * Title: 获得总的列表ip.
 * </p>
 * <p>
 * Description:
 * 首先是http://info.b2b.hc360.com/list/company.shtml,这是总的起始页。而GetBigUrl是处理这一页的。
 * 用来得到下一页的链接。这里有个问题，就是此页得到的链接是不能用的。也就是直接利用links()函数得到的链接是不能用
 * 的。如果用这个链接，在地址栏会自动改变地址。我也不知道为什么。为了解决这个问题，需要自己解析拼接地址。经过观察，
 * （也就是2里面的地址),你可以发现，只需要把w=破译掉即可。而它正式这个链接的text()的中文的Url编码。所以，直接 自己提取出来自己组合即可。
 * </p>
 * 
 * @author kaikai
 * @2017年3月21日
 */
public class GetBigUrl implements PageProcessor,Runnable
{
	private Site site = Site.me()
			.setUserAgent("Mozilla/5.0 (X11; U; Linux i686; zh-CN; rv:1.9.1.2) " + "Gecko/20090803").setRetryTimes(3)
			.setSleepTime(100);

	@Override
	public void process(Page page)
	{

		ArrayList<String> nameList = new ArrayList<String>();
		nameList = (ArrayList<String>) page.getHtml().xpath("//body//div[@class='indMarketClassBox']//a/text()").all();

		for (String name : nameList)
		{
			if (name.equals("更多"))
			{
				continue;
			}
			try
			{
				String nameTemp = name;
				name = URLEncoder.encode(name, "gb2312");
				String url = "http://s.hc360.com/?w=" + name + "&mychannel=enterprise";
				UrlHuiCong huiCong = new UrlHuiCong(url, nameTemp);

				dbUtil.insertUrl(huiCong, "huicong_url1");

			} catch (UnsupportedEncodingException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			} catch (IOException e)
			{
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

		}

	}

	@Override
	public Site getSite()
	{
		return site;
	}

	// 一个代替main函数的函数
	public static void runSpider()
	{
		System.out.println("爬取类别链接开始");
		Spider.create(new GetBigUrl())
		      .addUrl("http://info.b2b.hc360.com/list/company.shtml")
		      .run();

	}

	public static void main(String[] args)
	{
		runSpider();
	}

	@Override
	public void run()
	{
		// TODO Auto-generated method stub
		runSpider();
	}
}